﻿// Inner Kit 库
// 通用结构类
// Copyright (c) 2024 by 尔西大帝. All rights reserved.
//
// 这个文件包含一些基本的数据类型。
// 都包含在ikit命名空间下，防止命名冲突
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2024-11-14

#pragma once

namespace ikit {

////////////////////////////////////////////////////////////////////////////////
// 数学常量
////////////////////////////////////////////////////////////////////////////////
constexpr float EPSILON4 = 1E-4f;
constexpr float EPSILON5 = 1E-5f;
constexpr float EPSILON6 = 1E-6f;
constexpr float PI = 3.141592654f;
constexpr float PI2 = 6.283185307f;
constexpr float PI_HALF = 1.570796327f;
constexpr float PI_QUAD = 0.785398164f;
constexpr float PI_INV = 0.318309886f;
constexpr float DEG2RAD = 0.017453292f;
// 在进行四元数转化的时候，需要一个半角。省去一次浮点乘法。
constexpr float DEG2RAD_HALF = 0.008726646f;
constexpr float RAD2DEG = 57.2957795f;
constexpr float RAD45 = 0.78539816f;
constexpr float RAD90 = 1.57079633f;

typedef struct tagRect {
  int left;
  int top;
  int right;
  int bottom;
} Rect, *PRect;

typedef struct tagPoint {
  int x;
  int y;
} Point, *PRoint;

typedef struct tagSize {
  int width;
  int height;
} Size, *PSize;

typedef struct tagRectF {
  float left;
  float top;
  float right;
  float bottom;
} RectF, *PRectF;

typedef struct tagPointF {
  float x;
  float y;
} PointF, *PRointF;

typedef struct tagSizeF {
  float width;
  float height;
} SizeF, *PSizeF;

} // namespace ikit
